package com.lz.autotest.project.testmanage.infmanage.service;

import com.lz.autotest.common.web.domain.TreeSelect;
import com.lz.autotest.project.testmanage.infmanage.domain.SstInf;

import java.util.List;
import java.util.Map;


/**
 * 部门管理 服务层
 *
 * @author lz
 */
public interface InfManageService {
    /**
     * 查询部门管理数据
     *
     * @param sstInf 部门信息
     * @return 部门信息集合
     */
    public List<SstInf> selectSstInfList(SstInf sstInf);

    /**
     * 接口管理搜索框,匹配名字和url
     */
    public List<SstInf> selectSstInfListByCondition(SstInf sstInf);

    public List<Map<String, Object>> queryInfAll(SstInf sstInf);

    public List<Map<String, Object>> querySstInfAll(Map map);


    /**
     * 构建前端所需要树结构
     *
     * @param sstInfs
     * @return 树结构列表
     */
    public List<SstInf> buildSstInfTree(List<SstInf> sstInfs);

    /**
     * 构建前端所需要下拉树结构
     *
     * @param sstInfs
     * @return 下拉树结构列表
     */
    public List<TreeSelect> buildSstInfTreeSelect(List<SstInf> sstInfs);


    /**
     * 根据部门ID查询信息
     *
     * @param infId
     * @return 部门信息
     */
    public SstInf selectSstInfById(String infId);

    /**
     * 根据ID查询所有子部门（正常状态）
     *
     * @param infId
     * @return 子部门数
     */
    public int selectNormalChildrenSstInfById(String infId);

    /**
     * 是否存在部门子节点
     *
     * @param infId
     * @return 结果
     */
    public boolean hasChildBySstInfId(String infId);


    /**
     * 校验部门名称是否唯一
     *
     * @param sstInf
     * @return 结果
     */
    public String checkSstInfNameUnique(SstInf sstInf);

    public String checkSstInfCodeUnique(SstInf sstInf);

    /**
     * 校验部门是否有数据权限
     *
     * @param infId
     */
    public void checkSstInfDataScope(String infId);

    /**
     * 新增保存部门信息
     *
     * @param sstInf
     * @return 结果
     */
    public int insertSstInf(SstInf sstInf);

    /**
     * 修改保存部门信息
     *
     * @param sstInf
     * @return 结果
     */
    public int updateSstInf(SstInf sstInf);

    /**
     * 删除部门管理信息
     *
     * @param infId
     * @return 结果
     */
    public int deleteSstInfById(String infId);

    public List<TreeSelect> selectSstInfTreeList(SstInf sstInf);

    Map<String,String> countInf();

    List<SstInf> childrenList(String infId);

    /**
     * @description 根据多个infId查询接口信息
     * @author zip.li
     * @date 2023/8/17 17:10
     * @Version1.0
     **/
    List<SstInf> selectInfListByIds(List<String> list);
}
